iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 20
2
自我挑戰組

卡牌連線遊戲開發經驗分享系列 第 21

#20 實作更高的抽象層:生物、法術、規則

  • 分享至 

  • xImage
  •  

抽象層主要是非卡牌層級的東西,把它區隔開來是方便劃分範圍,在實作的時候比較不會搞混在一起。
我當初在設計的時候,是按照一些分類方法把我需要實作的東西區分開來。

按照「場面上持續時間」區分:

  1. 瞬間:如法術,執行完就結束,對當回合沒有影響
  2. 持續:當回合有效的效果,需要計算剩餘有效回合
  3. 半永久:如生物、裝備,離場條件是血量<=0、耐久度<=0

一開始先把「看得見的東西」實作出來,再來就開始弄「看不見的規則」。這時候就要開始弄各式各樣的觸發、判定。

例如:

  1. 當場上存在「嘲諷」屬性的生物時,沒辦法攻擊其他生物。
  2. 當被攻擊的生物具有「潛行」屬性時,無法成為攻擊指定的對象。
  3. 剛進場的生物會被設定為「休息」狀態,等到下回合開始才會從休息轉成「可行動」。
  4. 具備「戰吼」的生物,進場時候會觸發操作。
  5. 具備「死聲」的生物,死亡時會觸發效果。

這些部份通常會需要「事件監聽器」、「觸發器」來協助實作。然後一旦場面上有重複的監聽器、觸發器時,需要小心檢查在程式運作時,會不會互相干擾?不小心造成無限觸發的BUG?

按照「對象」區分:

  1. 特定單體:像是法師火球可以攻擊任意對象
  2. 群體:AOE、或是對我方所有生物有效的靈氣
  3. 擴散:對指定對象的兩旁生物產生效果
  4. 隨機:不固定的我方、敵方、全體對象

當你把這些區分開來,在實作的時候,會減少不少麻煩。
遊戲中使用「群組」的方式檢查對象是否符合?在開發上還蠻方便的。

按照「效果種類」區分:

  1. 傷害
  2. 召喚
  3. 提昇攻擊/生命
  4. 附加額外屬性

大致以上方向,實作尚以這幾個面向下去處理,我想問題會變簡單一些。

這系列差不多也要寫到尾聲了,後面遊戲的部份大略講一下自己的實作經驗。大概會講解中間有哪些需要注意的?然後我自己是用什麼架構處理問題?接下來,我想講講自己中間是用什麼樣的方式一步步把遊戲內容做出來?然後推薦一些幫助專案開發的工具。也希望想要開發卡牌遊戲的人在這系列文得到一些開發養分,幫助你們開發出自己心目中的卡牌遊戲。


上一篇
#19 卡牌層:以《爐石戰記》中的卡牌行動為例
下一篇
#21 規則層:「觸發」和「變化」交織的網
系列文
卡牌連線遊戲開發經驗分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言